﻿#include<iostream>
using namespace std;

//template<class T1,class T2>
//void tab(T1& x, T2& y)
//{
//	T1 num = x;
//	x = y;
//	y = num;
//}
//int main()
//{
//	int a = 10, b = 20;
//	double c = 1.1, d = 2.2;
//	tab(a, b);
//	tab(c, d);
//	tab(c, b);
//}

//
//template<class T>
//T tab(const T& x, const T& y)
//{
//	return x + y;
//}
//
//
//
//
//int main()
//{
//	int a = 10, b = 20;
//	double c = 1.1, d = 2.2;
//
//	cout << tab(a,b) << endl;
//
//
//
//	/*cout << tab(a, (int)c) << endl;
//	cout << tab((double)a, c) << endl;
//
//	cout << tab<int>(a, c) << endl;
//	cout << tab<double>(a, c) << endl;*/
//}



//// 专门处理int的加法函数
//int Add(int left, int right)
//{
//	return left + right;
//}
//// 通用加法函数
//template<class T>
//T Add(T left, T right)
//{
//	cout << "T Add(T left, T right)" << endl;
//	return left + right;
//}
//
//template<class T1,class T2>
//T1 Add(T1 left, T2 right)
//{
//	cout << "1234" << endl;
//	return left + right;
//}
//
//void main()
//{
//	cout << Add(1, 5) << endl;
//
//	cout << Add<int>(3, 6) << endl;
//	cout << Add(1.4, 3.5) << endl;
//
//	cout << Add(5, 1.5) << endl;
//}


//#include<iostream>
//using namespace std;
//// 类模版
//template<class T>
//class Stack
//{
//public:
//	Stack(size_t capacity = 4)
//	{
//		_array = new T[capacity];
//		_capacity = capacity;
//		_size = 0;
//	}
//
//private:
//	T* _array;
//	size_t _capacity;
//	size_t _size;
//};
//
//
//
//int main()
//{
//	
//	return 0;
//}

//class fang
//{
//public:
//	char& operator[](size_t n)
//	{
//		return _add[n];
//	}
//private:
//	char* _add;
//
//};

//#include<string>
//#include<list>
//int main()
//{
//	string a1;
//	string a2("11141333");
//	string a3("22222222",5);
//	string a4(100, 'x');
//	string a5(a2, 5, 3);
//	string a6(a2, 3);
//	
//	a2[4] = 'x';
//
//
//	//cout << a1 << endl;
//	//cout << a2 << endl;
//	//cout << a3 << endl;
//	//cout << a4 << endl;
//	//cout << a5 << endl;
//	//cout << a6 << endl;
//	//for (size_t i = 0; i < a2.size(); i++)
//	//{
//	//	a2[i]++;
//	//}
//	//cout << a2 << endl;
//
//	//迭代
//	//string::iterator num = a2.begin();
//	//while (num != a2.end())
//	//{
//	//	cout << *num << " ";
//	//	++num;
//	//}
//	//cout << endl;
//
//	list<int> nn;
//	nn.push_back(1);
//	nn.push_back(2);
//	nn.push_back(3);
//	nn.push_back(4);
//
//	list<int>::iterator li = nn.begin();
//	while (li != nn.end())
//	{
//		cout << *li << " ";
//		li++;
//	}
//	cout << endl;
//
//}
//

//#include<list>
//int main()
//{
//	int i = 0;
//	int j = 5;
//	//自动推导类型
//	auto a = i;
//	int &y = i;
//	auto& p = y;
//
//
//	//list<int> nn;
//
//	//nn.push_back(1);
//	//nn.push_back(2);
//	//nn.push_back(3);
//	//nn.push_back(4);
//
//	//auto li = nn.begin();
//	//while (li != nn.end())
//	//{
//	//	cout << *li << " ";
//	//	li++;
//	//}
//	//cout << endl;
//
//
//	list<int> li;
//	li.push_back(1);
//	li.push_back(2);
//	li.push_back(3);
//	li.push_back(4);
//	string a1("asfsdgfg");
//
//	const string a2(a1);
//	//string::const_iterator n = a2.begin();
//	//while (n != a2.end())
//	//{
//
//	//	cout << *n << " ";
//	//	n++;
//	//}
//	////反向
//	auto n = a2.rbegin();
//	while (n != a2.rend())
//	{
//		cout << *n << " ";
//		n++;
//	}
//	cout << endl;
//
//	//for (auto n : li)
//	//{
//	//	cout << n << endl;
//	//}
//
//
//	//for (auto ch : a1)
//	//{
//	//	cout << ch << " ";
//	//}
//	//cout << endl;
//
//
//	//for (auto& ch1 : a1)
//	//{
//	//	ch1++;
//	//}
//
//	//for (auto ch : a1)
//	//{
//	//	cout << ch << " ";
//	//}
//	//cout << endl;
//}
